package com.internetCafes.spms.web.customer.bizservice.area;

import com.internetCafes.spms.common.utils.entity.page.PageItemDTO;
import com.internetCafes.spms.common.utils.entity.page.PageItemVO;
import com.internetCafes.spms.web.customer.model.area.*;
import com.internetCafes.spms.web.customer.model.user.EntUserAreaPagingReq;
import com.internetCafes.spms.web.customer.model.user.EntUserAreaPagingRes;

import java.util.List;

/**
 * 企业区域管理实现层
 */
public interface IEntAreaBizService {

    /**
     * 通过区域id 获取区域 和 销售信息
     *
     * @param id 区域id
     * @return 区域返回信息
     */
    EntAreaDetailForSaleRes detailEntAreaSaleDetailByAreaId(Long id);

    /**
     * 取消区域分配
     */
    boolean deleteEntAreaUserConfig(EntAreaUserConfigReq req);

    /**
     * 区域名单-区域方向
     *
     * @param req 请求参数
     * @return 区域信息
     */
    List<EntAreaDetailForSaleRes> listAreaDetailForSale(EntAreaDetailReq req);

    /**
     * 获取区域信息树形列表接口
     *
     * @param req 请求参数
     * @return 树形数据
     */
    List<EntAreaDetailRes> listEntAreaDetailRList(EntAreaDetailReq req);

    /**
     * 区域名单-excel-导出
     */
    List<EntAreaExcel> areaExcel(EntAreaExcelReq req);

    /**
     * 区域名单管理-excel-销售角度
     */
    List<EntUserAreaExcel> entUserAreaExcelList(EntUserAreaPagingReq req);

    /**
     * 区域名单管理-excel-区域角度
     */
    List<EntAreaUserExcel> entAreaUserExcelList(EntAreaUserPagingReq req);

    /**
     * 区域名单管理-分页-销售角度
     */
    PageItemVO<EntUserAreaPagingRes> userAreaPaging(PageItemDTO<EntUserAreaPagingReq> req);

    /**
     * 区域名单管理-详情-区域角度
     */
    EntAreaUserDetailRes entAreaUserDetail(Long id);

    /**
     * 区域名单管理-分页-区域角度
     */
    PageItemVO<EntAreaUserPagingRes> entAreaUserPoPaging(PageItemDTO<EntAreaUserPagingReq> req);

    /**
     * 区域配置
     */
    boolean entAreaUserConfig(EntAreaUserConfigReq req);

    /**
     * 区域信息列表 树形
     */
    List<EntAreaTreeRes> entAreaTree(EntAreaTreeReq req);

    /**
     * 区域信息列表
     */
    List<EntAreaListRes> entAreaList(EntAreaListReq req);

    /**
     * 区域信息分页
     */
    PageItemVO<EntAreaPagingRes> entAreaPaging(PageItemDTO<EntAreaPagingReq> req);

    /**
     * 区域信息修改
     */
    boolean areaUpdate(EntAreaUpdateReq req);

    /**
     * 区域信息删除
     */
    boolean areaDelete(List<Long> areaIdList);

    /**
     * 区域保存
     */
    boolean areaSave(EntAreaSaveReq req);

}
